package org.springframework.boot.tests.hibernate52.mytest.messagesource;


import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.stereotype.Component;

import java.util.Properties;

/**
 * 必须注册的容器名 {@link AbstractApplicationContext#MESSAGE_SOURCE_BEAN_NAME}
 * 详见 {@link org.springframework.context.annotation.AnnotationConfigApplicationContext#initMessageSource}
 */
@Component("messageSource")
@ConditionalOnProperty(name = "mymessage.enable", havingValue = "true")
public class MyMessageSource extends ReloadableResourceBundleMessageSource {

	public MyMessageSource() {
		super();
		/**
		 * 这里的文件名为啥只有一个？{@link ReloadableResourceBundleMessageSource#getMergedProperties(java.util.Locale)}
		 * 查看上面的方法就好了 他会加载三种文件名的文件 default、default+"_"+lang、default+"_"+lang+"_"+country
		 */
		this.setBasenames("/i18n/default");
		Properties properties = new Properties();
		//中文文件必须设置编码，不然乱码.这里的key就是文件名，可以查看上面的源码就可以看见了
		properties.setProperty("/i18n/default_zh_CN", "UTF-8");
		this.setFileEncodings(properties);
	}
}
